package work02.w5.control.server;

import java.util.Map;

public class MyEvent {
	MyEvent(Object source, MyEventType eventType, Map<String, Object> params) {
		super();
		init(source, eventType, params);
	}
	void init(Object source, MyEventType eventType, Map<String, Object> params) {
		this.source = source;
		this.eventType = eventType;
		this.params = params;
		this.usedNum=0;
	}
	private Object source;
	private MyEventType eventType;
	private Map<String, Object> params ;
	/**
	 * 正在被其他对象使用的数目
	 */
	private int usedNum=0;
	public boolean isUsed(){
		return usedNum<=0;
	}
	/**
	 * 当需要长时间保留该对象的引用而非内部参数的引用时，使用此方法，使用完毕请及时使用dispose方法.
	 * @param o 事件被使用的对象
	 */
	public void using(Object o){
		usedNum++;
	}
	/**
	 * 当使用using方法长时间保留该类后，使用完毕时释放所使用的方法。
	 * @param o
	 */
	public void dispose(Object o){
		usedNum--;
	}
	/**
	 * @return the source
	 */
	public Object getSource() {
		return source;
	}
	/**
	 * @return the eventType
	 */
	public MyEventType getEventType() {
		return eventType;
	}
	/**
	 * @return the params
	 */
	public Map<String, Object> getParams() {
		return params;
	}
	
	public Object getParam(String key){
		return params.get(key);
	}
}
